import { _decorator, Prefab, Node, SpriteComponent, SpriteFrame, ImageAsset, resources, error, Texture2D, instantiate, isValid, find, TextAsset, JsonAsset, assetManager } from "cc";
import { ConstantClass } from "./constantClass";
const { ccclass } = _decorator;

@ccclass("ResourceUtilClass")
export class ResourceUtilClass {
    // // 加载Bundle资源
    // public static loadTheBundleRes (bundleName: string, url: string, type: any) {
    //     return new Promise((resolve, reject) => {
    //         assetManager.loadBundle(bundleName, (err, bundle) => {
    //             bundle.load(url, type, (err: any, res: any) => {
    //                 if (err) {
    //                     error(err.message || err);
    //                     reject && reject(err)
    //                     return;
    //                 }

    //                 resolve && resolve(res);
    //             })
    //         });
    //     })
    // }

    // /**
    // * 加载资源
    // * @param url   资源路径
    // * @param type  资源类型
    // * @method loadRes
    // */
    // public static loadTheRes (url: string, type: any) {
    //     return new Promise((resolve, reject) => {
    //         resources.load(url, type, (err: any, res: any) => {
    //             if (err) {
    //                 error(err.message || err);
    //                 reject && reject(err)
    //                 return;
    //             }

    //             resolve && resolve(res);
    //         })
    //     })
    // }

    // /**
    //  * 获取特效prefab
    //  * @param modulePath 路径
    //  * @returns
    //  */
    // public static async loadTheEffectRes (modulePath: string) {
    //     return this.loadTheRes(`${ConstantClass.RESOURCES_222FILE333_NAME.PREFAB}/${ConstantClass.PREFAB666_FILE777_NAME.EFFECT}/${modulePath}`, Prefab);
    // }

    // /**
    //  * 获取模型prefab
    //  * @param modulePath 模型路径
    //  * @returns
    //  */
    // public static async loadTheModelRes (modulePath: string) {
    //     return this.loadTheRes(`${ConstantClass.RESOURCES_222FILE333_NAME.PREFAB}/${ConstantClass.PREFAB666_FILE777_NAME.MODEL}/${modulePath}`, Prefab)
    // }

    // /**
    //  * 获取UI prefab
    //  * @param prefabPath prefab路径
    //  */
    // public static async getTheUIPrefabRes (prefabPath: string) {
    //     return this.loadTheRes(`${ConstantClass.RESOURCES_222FILE333_NAME.PREFAB}/${ConstantClass.PREFAB666_FILE777_NAME.UI}/${prefabPath}`, Prefab);
    // }

    // /**
    //  * 创建ui界面
    //  * @param path ui路径
    //  * @param cb 回调函数
    //  * @param parent 父节点
    //  */
    // public static async createTheUI (path: string, parent?: Node) {
    //     let pf = await this.getTheUIPrefabRes(path) as Prefab;
    //     let node: Node = instantiate(pf);
    //     node.setPosition(0, 0, 0);
    //     if (!parent) {
    //         parent = find("Canvas") as Node;
    //     }
    //     parent.addChild(node);
    //     return node;
    // }

    // /**
    //  * 获取json数据
    //  * @param fileName 文件名
    //  * @param cb 回调函数
    //  */
    // public static async getTheJsonData (fileName: string) {
    //     let content = await this.loadTheRes(`${ConstantClass.RESOURCES_222FILE333_NAME.DATA}/` + fileName, null) as JsonAsset;

    //     if (content.json) {
    //         return content.json;
    //     } else {
    //         return 'failed!!!';
    //     }
    // }

    // /**
    //  * 获取文本数据
    //  * @param fileName 文件名
    //  */
    // public static async getTheTextData (fileName: string) {
    //     let content = await this.loadTheRes(`${ConstantClass.RESOURCES_222FILE333_NAME.DATA}/` + fileName, null) as TextAsset;
    //     let text: string = content.text;
    //     return text;
    // }

    // /**
    //  * 批量加载路径下的资源
    //  */
    // public static loadTheDirRes (path: string, type: any, callback: Function) {
    //     resources.loadDir(path, type, (err: any, assets: any) => {
    //         if (err) {
    //             console.error(err);
    //         } else {
    //             callback(null, assets);
    //         }
    //     });
    // }

    // /**
    //  * 设置精灵贴图
    //  * @param path 资源路径
    //  * @param sprite 精灵
    //  */
    // public static async setTheSpriteFrame (path: string, sprite: SpriteComponent) {
    //     let sf = await this.loadTheRes(path + '/spriteFrame', SpriteFrame) as SpriteFrame;
    //     if (sprite && isValid(sprite)) {
    //         sprite.spriteFrame = sf;
    //     }
    // }
}
